/*
 * 使用函数模拟 slice
 */
// 编写一个函数，该函数接收一个用空格分隔单词的字符串，并返回在该字符串中找到的第一个单词。
// 如果函数在该字符串中并未找到空格，则整个字符串就是一个单词，所以应该返回整个字符串。
fn first_word(s: &String) -> usize {
    let bytes = s.as_bytes(); //...........................用as_bytes 方法将String 转化为字节数组
    for (i, &item) in bytes.iter().enumerate() { //....iter enumerate 方法，以元组(i, &item)的形式，返回集合中的每一个元素
        if item == b' ' { //......................................如果item等于空格，则返回i
            return i;
        }
    }
    s.len()
}

fn main() {
    let mut s = String::from("hello world");
    let word = first_word(&s);
    s.clear(); // 这清空了字符串，使其等于""
    // word 在此处的值仍然是5，
    println!("'{}' has size {}", s, word);
    // 但是没有更多的字符串让我们可以有效地应用数值5。word 的值现在完全无效！
}
